package com.woniu.client;

import com.woniu.commons.exception.YogaException;
import com.woniu.commons.model.Result;
import com.woniu.model.model.YGoodsItem;
import com.woniu.model.model.YGoodsOrder;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;


@FeignClient(name = "order-server",path = "/order")
public interface OrderClient {
    /**
     * getOneId通过一个订单编号查询一个订单回去
     * @param orderNum：订单编号
     * @return 一个订单
     */
    @GetMapping("/yGoodsOrder/getOneId/{id}")
    @ApiOperation(value = "getOneId通过一个订单编号查询一个订单回去")
    public Result<YGoodsOrder> getOneId(@PathVariable("id") String orderNum);

    /**
     * 通过一个订单编号查询一个订单回去
     * @param orderNum：订单编号
     * @return 一个订单
     */
    @GetMapping("/yGoodsOrder/byId/{id}")
    @ApiOperation(value = "通过一个订单编号查询一个订单回去")
    public Result<YGoodsOrder>byId(@PathVariable("id") String orderNum);

    /**
     * 传一个对象，根据id去修改里面的信息
     * 在商城订单消费者里面用了，用于去修改商品的冻结量和数量
     * @param yGoodsOrder 商品对象
     * @return
     * @throws YogaException
     */
    @PostMapping("/yGoodsOrder/updateByIdGoodsOrder")
    @ApiOperation(value = "传一个订单对象，根据id去修改里面的信息")
    public Result updateByIdGoodsOrder(@RequestBody YGoodsOrder yGoodsOrder)throws YogaException;


    /**
     * 通过订单ID查询多个订单信息
     * @param orderNum 订单编号
     * @return
     * @throws YogaException
     */
    @PostMapping("/yGoodsItem/listByOrderItem")
    @ApiOperation(value = "通过订单ID查询多个订单信息")
    public Result<List<YGoodsItem>> listByClassType(@RequestBody String orderNum) throws YogaException;
}
